#coding:utf-8
'''数据库的迁移'''


from flask import Flask
#todo 第一步：先定义好sqlalchemy的模型类
from flask_sqlalchemy import SQLAlchemy

#todo 第二步：定义脚本manager，并修改启动方式为manager.run()
from flask_script import Manager

#todo 第三步：导入迁移，创建迁移实例，并添加到脚本命令
from flask_migrate import Migrate, MigrateCommand



app = Flask(__name__)
#todo 第二步：定义脚本manager，并修改启动方式为manager.run()
manager = Manager(app)  # 创建启动命令管理对象



#链接数据库:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask_test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)


#todo 第三步：导入迁移，创建迁移实例，并添加到脚本命令
#注册migrate
#第一个参数是Flask实例,第二个参数是Sqlalchemy数据库实例
migrate = Migrate(app, db) # 创建数据库迁移工具对象
#manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令
manager.add_command('db', MigrateCommand) # 向启动命令管理对象中添加迁移命令


#todo 第一步：先定义好sqlalchemy的模型类
#定义模型Role
class Role(db.Model):
    # 定义表名
    __tablename__ = 'roles'
    # 定义列对象
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    def __repr__(self):
        return 'Role:'.format(self.name)

#定义用户
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    def __repr__(self):
        return 'User:'.format(self.username)

if __name__ == '__main__':
    # app.run()
    #todo 第二步：定义脚本manager，并修改启动方式为manager.run()
    manager.run()

